
const userPermissions = ['edit', 'delete']; // 假设用户有这两个权限

const permission = {
  // 当指令绑定的元素插入 DOM 时调用
  mounted(el: HTMLElement, binding: { value: string | string[] }) {
    const requiredPermissions = binding.value; // 指令接收的权限（如 v-permission="'edit'" 或 v-permission="['edit', 'delete']"）
    
    // 检查用户是否有权限
    const hasPermission = Array.isArray(requiredPermissions)
      ? requiredPermissions.some(perm => userPermissions.includes(perm))
      : userPermissions.includes(requiredPermissions);

    // 无权限时隐藏元素（或禁用，根据需求调整）
    if (!hasPermission) {
      el.style.display = 'none'; // 隐藏元素
      // 或禁用元素：el.disabled = true;
    }
  },
  beforeUnmount(el: HTMLElement) {
    // 元素从 DOM 中移除时，确保元素可见（或启用）
    el.style.display = ''; // 恢复默认显示
    // 或启用元素：el.disabled = false;
  },
  beforeUpdate(el: HTMLElement, binding: { value: string | string[] }) {
    // 当指令绑定的值变化时调用前，确保元素可见（或启用）
    el.style.display = ''; // 恢复默认显示
    // 或启用元素：el.disabled = false;
  },
  update(el: HTMLElement, binding: { value: string | string[] }) {
    // 当指令绑定的值变化时调用
    this.mounted(el, binding); // 复用 mounted 逻辑
  },
  unmounted(el: HTMLElement) {
    // 指令从元素上移除时调用
    this.beforeUnmount(el); // 复用 beforeUnmount 逻辑
  },
} 
export default permission;